#include "qmyartikli.h"
#include "qpriemnicavnes.h"
#include "qpriemnicakorekcija.h"
#include "qispratnicivnes.h"
#include "qispratnicikorekcija.h"
#include "qfakturikorekcija.h"
#include "qfakturivnes.h"
#include "qpovratnicavnes.h"
#include "qpovratnicakorekcija.h"
#include "qprofakturavnes.h"
#include "qprofakturakorekcija.h"
#include "qkasavnes.h"
#include "qkasakorekcija.h"
#include "qizjavavnes.h"
#include "qizjavakorekcija.h"
#include "qnormativvnes.h"
#include "qnormativkorekcija.h"
#include "qnormativWizard.h"
#include "qnalogvnes.h"
#include "qnalogkorekcija.h"
#include "qnarackivnes.h"
#include "qnarackikorekcija.h"
#include "qnarackiWizard.h"
#include "qpovratnicavnes.h"
#include "qpovratnicakorekcija.h"
#include "qkalkulacijavnes.h"
#include "qkalkulacijakorekcija.h"
#include "qpltmvnes.h"
#include "qpltmkorekcija.h"
#include "qprodpovratnicavnes.h"
#include "qprodpovratnicakorekcija.h"
#include "qprodnivelacijavnes.h"
#include "qprodnivelacijakorekcija.h"
#include "qprodsmetkavnes.h"
#include "qprodsmetkakorekcija.h"

QMyArtikli::QMyArtikli(QWidget *parent)
	: QMyBaseWidget(parent)
	,artikliVnes(0)
	,artikliKorekcija(0)
	,artikliLista(0)
	,m_row(0),
	m_searchStr("")
{
	ui.setupUi(this);
	pressF4();
	artikliLista->setFocusSearchField();

}

QMyArtikli::~QMyArtikli()
{

}

void QMyArtikli::pressF2()
{
    QString selText = artikliLista ?  artikliLista->getLine() : "";

    closeAllForm();
	artikliVnes = showMyWidget<QArtikliVnes>(artikliVnes); 
	artikliVnes->setCategoryWidget(this);
	connect(artikliVnes, SIGNAL(succesfulEntryData()), this, SLOT(succesfulEntryData()));
	connect(artikliVnes, SIGNAL(scallKomintenti(QWidget*, QString)), this, SLOT(callKomintenti(QWidget*, QString)));
	connect(artikliVnes, SIGNAL(closeW()), this, SLOT(closeW()));
    artikliVnes->setSLine(selText);
}
void QMyArtikli::pressF3()
{
	QString selText = artikliLista ? artikliLista->getSelectedText() : "";
	if (selText.isEmpty())
	{
		return;
	}
	closeAllForm();
	artikliKorekcija = showMyWidget<QArtikliKorekcija>(artikliKorekcija); 
	artikliKorekcija->setCategoryWidget(this);
	connect(artikliKorekcija, SIGNAL(succesfulEntryData()), this, SLOT(succesfulEntryData()));
	connect(artikliKorekcija, SIGNAL(scallKomintenti(QWidget*, QString)), this, SLOT(callKomintenti(QWidget*, QString)));
	connect(artikliKorekcija, SIGNAL(closeW()), this, SLOT(closeW()));
	artikliKorekcija->showData(selText);
}
void QMyArtikli::pressF4()
{
	closeAllForm();
	artikliLista = showMyWidget<QMyArtikliLista>(artikliLista);
	//artikliLista->lista(m_searchStr);
	artikliLista->setSearchStr(m_searchStr);
	artikliLista->setRow(m_row);
	connect(artikliLista,SIGNAL(closeW()),this,SLOT(closeWLista()));
	connect(artikliLista,SIGNAL(sArtikalToPriemnica(QString&, QString&)),this,SLOT(retArtikliToPriemnica(QString&,QString&)));
    connect(artikliLista,SIGNAL(procF2()),this,SLOT(procF2()));
    connect(artikliLista,SIGNAL(procF3()),this,SLOT(procF3()));
    connect(artikliLista,SIGNAL(procDel()),this,SLOT(procDel()));
}
void QMyArtikli::procF2()
{
    pressF2();
}
void QMyArtikli::procF3()
{
    pressF3();
}
void QMyArtikli::procDel()
{

}
void QMyArtikli::refresh()
{
}

void QMyArtikli::callKomintenti(QWidget* myobj, QString text)
{
	emit signKomintentiFromIspratnica(myobj, text);
}

void QMyArtikli::pressEscape()
{
	this->raise();
	this->setFocus();
	QString text = "";
    QString textName = "";
	QWidget *sour = getSourceWidget();
	
	if (sour)
	{
		retArtikliToPriemnica(text, textName);
	} 
	else
	{
		emit signCloseMyWidget();	
	}
}
void QMyArtikli::closeW()
{
	pressF4();
}
void QMyArtikli::closeWLista()
{
	pressEscape();
}

void QMyArtikli::closeAllForm()
{
	artikliKorekcija = deleteMyWidget<QArtikliKorekcija>(artikliKorekcija);
	artikliVnes = deleteMyWidget<QArtikliVnes>(artikliVnes);
	if (artikliLista)
	{
		m_row = artikliLista->getRow();
		m_searchStr = artikliLista->getSearchStr();
	}
	artikliLista = deleteMyWidget<QMyArtikliLista>(artikliLista);
}

void QMyArtikli::succesfulEntryData()
{
	pressF4();
}

QStandardItemModel* QMyArtikli::getModel()
{
    QStandardItemModel * modelExt;
    if (artikliLista)
    {
        modelExt = artikliLista->model;
    } 
    else
    {
        modelExt = NULL;
    }
    return modelExt;
}


void QMyArtikli::retArtikliToPriemnica(QString& text, QString& textName)
{
    QWidget *sour = getSourceWidget();

	if (qobject_cast<QPLTMVnes*>(sour))
	{
		QPLTMVnes *dest = qobject_cast<QPLTMVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QPLTMKorekcija*>(sour))
	{
		QPLTMKorekcija *dest = qobject_cast<QPLTMKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

	if (qobject_cast<QProdPovratnicaVnes*>(sour))
	{
		QProdPovratnicaVnes *dest = qobject_cast<QProdPovratnicaVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QProdPovratnicaKorekcija*>(sour))
	{
		QProdPovratnicaKorekcija *dest = qobject_cast<QProdPovratnicaKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

	if (qobject_cast<QProdNivelacijaVnes*>(sour))
	{
		QProdNivelacijaVnes *dest = qobject_cast<QProdNivelacijaVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QProdNivelacijaKorekcija*>(sour))
	{
		QProdNivelacijaKorekcija *dest = qobject_cast<QProdNivelacijaKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

	if (qobject_cast<QProdSmetkaVnes*>(sour))
	{
		QProdSmetkaVnes *dest = qobject_cast<QProdSmetkaVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QProdSmetkaKorekcija*>(sour))
	{
		QProdSmetkaKorekcija *dest = qobject_cast<QProdSmetkaKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}


	if (qobject_cast<QKalkulacijaVnes*>(sour))
	{
		QKalkulacijaVnes *dest = qobject_cast<QKalkulacijaVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QKalkulacijaKorekcija*>(sour))
	{
		QKalkulacijaKorekcija *dest = qobject_cast<QKalkulacijaKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

	if (qobject_cast<QNormativVnes*>(sour))
	{
		QNormativVnes *dest = qobject_cast<QNormativVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QNormativKorekcija*>(sour))
	{
		QNormativKorekcija *dest = qobject_cast<QNormativKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

	if (qobject_cast<QPovratnicaVnes*>(sour))
	{
		QPovratnicaVnes *dest = qobject_cast<QPovratnicaVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QPovratnicaKorekcija*>(sour))
	{
		QPovratnicaKorekcija *dest = qobject_cast<QPovratnicaKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	
	if (qobject_cast<QNormativWizard*>(sour))
    {
        QNormativWizard *dest = qobject_cast<QNormativWizard*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
	
	if (qobject_cast<QNarackiVnes*>(sour))
	{
		QNarackiVnes *dest = qobject_cast<QNarackiVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QNarackiKorekcija*>(sour))
	{
		QNarackiKorekcija *dest = qobject_cast<QNarackiKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

    if (qobject_cast<QNarackiWizard*>(sour))
    {
        QNarackiWizard *dest = qobject_cast<QNarackiWizard*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }

	if (qobject_cast<QNalogVnes*>(sour))
	{
		QNalogVnes *dest = qobject_cast<QNalogVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QNalogKorekcija*>(sour))
	{
		QNalogKorekcija *dest = qobject_cast<QNalogKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	
	if (qobject_cast<QPriemnicaVnes*>(sour))
    {
        QPriemnicaVnes *dest = qobject_cast<QPriemnicaVnes*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
    if (qobject_cast<QPriemnicaKorekcija*>(sour))
    {
        QPriemnicaKorekcija *dest = qobject_cast<QPriemnicaKorekcija*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }

    if (qobject_cast<QIspratniciVnes*>(sour))
    {
        QIspratniciVnes *dest = qobject_cast<QIspratniciVnes*>(sour);
        dest->setArtikli(text, textName, QString(""));
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
    if (qobject_cast<QIspratniciKorekcija*>(sour))
    {
        QIspratniciKorekcija *dest = qobject_cast<QIspratniciKorekcija*>(sour);
        dest->setArtikli(text, textName, QString(""));
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
    if (qobject_cast<QFakturiVnes*>(sour))
    {
        QFakturiVnes *dest = qobject_cast<QFakturiVnes*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
    if (qobject_cast<QFakturiKorekcija*>(sour))
    {
        QFakturiKorekcija *dest = qobject_cast<QFakturiKorekcija*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
    if (qobject_cast<QProFakturiVnes*>(sour))
    {
        QProFakturiVnes *dest = qobject_cast<QProFakturiVnes*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
    if (qobject_cast<QProFakturiKorekcija*>(sour))
    {
        QProFakturiKorekcija *dest = qobject_cast<QProFakturiKorekcija*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
    if (qobject_cast<QKasaVnes*>(sour))
    {
        QKasaVnes *dest = qobject_cast<QKasaVnes*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
    if (qobject_cast<QKasaKorekcija*>(sour))
    {
        QKasaKorekcija *dest = qobject_cast<QKasaKorekcija*>(sour);
        dest->setArtikli(text, textName);
        emit eupdateNanigator(dest->getCategoryWidget(), this);
        dest->setFocusLine2();
    }
	if (qobject_cast<QIzjavaVnes*>(sour))
	{
		QIzjavaVnes *dest = qobject_cast<QIzjavaVnes*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QIzjavaKorekcija*>(sour))
	{
		QIzjavaKorekcija *dest = qobject_cast<QIzjavaKorekcija*>(sour);
		dest->setArtikli(text, textName);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

}


void QMyArtikli::setInitSearchText(QString text)
{
	if (artikliLista)
	{
		artikliLista->setInitText(text);
	} 
}